// index/pages/freeResourceDetail/freeResourceDetail.js
const { http } = require('../../../utils/http.js');

// 配置选项 - 可以在这里调整后端服务地址
const API_CONFIG = {
  // 后端服务地址 - 根据您的实际后端服务地址修改
  BASE_URL: 'http://localhost:8080', // 如果后端运行在8080端口，请修改这里
};

// 创建自定义的HTTP实例，使用页面配置的BASE_URL
const customHttp = new (require('../../../utils/http.js').HttpUtil)({
  BASE_URL: API_CONFIG.BASE_URL
});

Page({
  data: {
    // 资料详情
    resourceDetail: null,
    // 加载状态
    loading: true,
    // 下载状态
    downloading: false
  },

  onLoad(options) {
    const { id } = options;
    if (id) {
      this.loadResourceDetail(id);
    } else {
      // 从缓存获取资料信息
      const cachedDetail = wx.getStorageSync('freeResourceDetail');
      if (cachedDetail) {
        this.setData({
          resourceDetail: cachedDetail,
          loading: false
        });
      } else {
        wx.showToast({
          title: '资料信息不存在',
          icon: 'none'
        });
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);
      }
    }
  },

  onUnload() {
    // 清理缓存
    wx.removeStorageSync('freeResourceDetail');
  },

  /**
   * 加载资料详情
   */
  loadResourceDetail(id) {
    this.setData({ loading: true });
    
    customHttp.get(`/hyg/resource/${id}`)
      .then(res => {
        console.log('资料详情获取成功:', res);
        
        if (res.data) {
          const detail = res.data;
          const resourceDetail = {
            id: detail.id,
            title: detail.title || '无标题',
            description: detail.description || '暂无描述',
            fileUrl: detail.fileUrl,
            downloadCount: detail.downloadCount || 0,
            createTime: detail.createTime,
            date: this.formatDate(detail.createTime),
            fileType: this.getFileType(detail.fileUrl),
            fileSize: this.getFileSize(detail.fileUrl)
          };
          
          this.setData({
            resourceDetail: resourceDetail,
            loading: false
          });
          
          // 更新缓存
          wx.setStorageSync('freeResourceDetail', resourceDetail);
        } else {
          throw new Error('资料详情数据为空');
        }
      })
      .catch(err => {
        console.error('获取资料详情失败:', err);
        
        let errorMessage = '获取资料详情失败';
        if (err.code === 404) {
          errorMessage = '资料不存在';
        } else if (err.code === 500) {
          errorMessage = '服务器错误，请稍后重试';
        } else if (err.code === 403) {
          errorMessage = '权限不足，请检查登录状态';
        }
        
        wx.showToast({
          title: errorMessage,
          icon: 'none',
          duration: 3000
        });
        
        setTimeout(() => {
          wx.navigateBack();
        }, 2000);
      });
  },

  /**
   * 下载资料
   */
  downloadResource() {
    const { resourceDetail } = this.data;
    
    if (!resourceDetail || !resourceDetail.fileUrl) {
      wx.showToast({
        title: '文件链接不存在',
        icon: 'none'
      });
      return;
    }
    
    if (this.data.downloading) {
      return;
    }
    
    wx.showModal({
      title: '确认下载',
      content: `确定要下载"${resourceDetail.title}"吗？\n文件类型：${resourceDetail.fileType}\n文件大小：${resourceDetail.fileSize}`,
      success: (res) => {
        if (res.confirm) {
          this.startDownload(resourceDetail);
        }
      }
    });
  },

  /**
   * 开始下载
   */
  startDownload(item) {
    this.setData({ downloading: true });
    
    wx.showLoading({
      title: '正在下载...'
    });
    
    // 调用后端下载接口
    const downloadUrl = `${API_CONFIG.BASE_URL}/hyg/resource/download/${item.id}`;
    
    wx.downloadFile({
      url: downloadUrl,
      success: (res) => {
        if (res.statusCode === 200) {
          // 下载成功，保存文件
          wx.saveFile({
            tempFilePath: res.tempFilePath,
            success: (saveRes) => {
              wx.hideLoading();
              this.setData({ downloading: false });
              
              wx.showToast({
                title: '下载成功',
                icon: 'success'
              });
              
              // 更新下载次数
              this.updateDownloadCount(item.id);
            },
            fail: (err) => {
              wx.hideLoading();
              this.setData({ downloading: false });
              
              wx.showToast({
                title: '保存失败',
                icon: 'none'
              });
            }
          });
        } else {
          wx.hideLoading();
          this.setData({ downloading: false });
          
          wx.showToast({
            title: '下载失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        wx.hideLoading();
        this.setData({ downloading: false });
        
        wx.showToast({
          title: '下载失败',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 更新下载次数
   */
  updateDownloadCount(id) {
    const { resourceDetail } = this.data;
    if (resourceDetail && resourceDetail.id === id) {
      this.setData({
        'resourceDetail.downloadCount': (resourceDetail.downloadCount || 0) + 1
      });
    }
  },

  /**
   * 分享资料
   */
  onShareAppMessage() {
    const { resourceDetail } = this.data;
    
    if (resourceDetail) {
      return {
        title: `${resourceDetail.title} - 免费资料分享`,
        path: `/index/pages/freeResourceDetail/freeResourceDetail?id=${resourceDetail.id}`,
        imageUrl: '/images/makesi.jpg' // 可以设置分享图片
      };
    }
    
    return {
      title: '免费资料 - 海量学习资源免费下载',
      path: '/index/pages/freeResources/freeResources'
    };
  },

  /**
   * 分享到朋友圈
   */
  onShareTimeline() {
    const { resourceDetail } = this.data;
    
    if (resourceDetail) {
      return {
        title: `${resourceDetail.title} - 免费资料分享`,
        imageUrl: '/images/makesi.jpg'
      };
    }
    
    return {
      title: '免费资料 - 海量学习资源免费下载',
      imageUrl: '/images/makesi.jpg'
    };
  },

  /**
   * 格式化日期
   */
  formatDate(dateString) {
    if (!dateString) return '';
    
    const date = new Date(dateString);
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    const hours = String(date.getHours()).padStart(2, '0');
    const minutes = String(date.getMinutes()).padStart(2, '0');
    
    return `${year}年${month}月${day}日 ${hours}:${minutes}`;
  },

  /**
   * 获取文件类型
   */
  getFileType(fileUrl) {
    if (!fileUrl) return '未知';
    
    const extension = fileUrl.split('.').pop()?.toLowerCase();
    const typeMap = {
      'pdf': 'PDF文档',
      'doc': 'Word文档',
      'docx': 'Word文档',
      'xls': 'Excel表格',
      'xlsx': 'Excel表格',
      'ppt': 'PPT演示',
      'pptx': 'PPT演示',
      'txt': '文本文件',
      'zip': '压缩包',
      'rar': '压缩包',
      'jpg': '图片文件',
      'jpeg': '图片文件',
      'png': '图片文件',
      'gif': '图片文件'
    };
    
    return typeMap[extension] || '其他文件';
  },

  /**
   * 获取文件大小（模拟）
   */
  getFileSize(fileUrl) {
    if (!fileUrl) return '未知';
    
    // 这里可以根据实际需求从后端获取文件大小
    // 暂时返回模拟数据
    const sizes = ['1.2MB', '2.5MB', '856KB', '3.1MB', '1.8MB'];
    return sizes[Math.floor(Math.random() * sizes.length)];
  }
});
